package clinsistem.c.repositorio;

import java.sql.ResultSet;
import java.sql.Statement;
import java.util.LinkedList;
import clinsistem.b.negocio.entidades.Data;
import clinsistem.b.negocio.entidades.Profissional;

public class RepositorioProfissional {
	
	public void atualizarProfissional(Profissional p) throws Exception {
		Statement stmt = null;
		stmt = ConexaoBD.getInstance().createStatement();
		
		stmt.execute("BEGIN;");
		stmt.execute("UPDATE usuario SET nome = '"+p.getNome()+"', status = '"+p.getStatus()+"' WHERE login = '"+p.getLogin()+"';");
		stmt.execute("UPDATE profissional SET registro = '"+p.getRegistro()+"', orgao_expedidor ='"+p.getOrgaoExpeditorRegistro()+"', estado_expedidor = '"+p.getEstadoExpedidor()+"', rg = '"+p.getRg()+"', categoria = '"+p.getCategoria()+"', especialidade = '"+p.getEspecialidade()+"', nascimento = '"+p.getNascimento()+"', telefone1 = '"+p.getTelefoneFixo()+"', telefone2 = '"+p.getTelefoneCelular()+"', email = '"+p.getEmail()+"', login = '"+p.getLogin()+"', sexo = '"+p.getSexo()+"', horario_trabalho = '"+p.getHorarioAtendimento()+"', valor_consulta = '"+p.getValorDaConsulta()+"' WHERE cpf = '"+p.getCpf()+"';");
		stmt.execute("COMMIT;");
	}
	
	public boolean isAdministrador(String login) throws Exception {
		Statement stmt = null;
		ResultSet rs = null;
		
		stmt = ConexaoBD.getInstance().createStatement();
		rs = stmt.executeQuery("SELECT * FROM usuario_perfil WHERE usuario = '"+login+"' AND perfil = 'ADMINISTRADOR';");
		
		return rs.next();
	}
	
	public void atribuirAdministrador(String login) throws Exception {
		Statement stmt = null;
		
		stmt = ConexaoBD.getInstance().createStatement();
		
		stmt.execute("INSERT INTO usuario_perfil(usuario,perfil) VALUES ('"+login+"','ADMINISTRADOR');");
		
	}
	
	public void desatribuirAdministrador(String login) throws Exception {
		Statement stmt = null;
		
		stmt = ConexaoBD.getInstance().createStatement();
		
		stmt.execute("DELETE FROM usuario_perfil WHERE usuario = '"+login+"' AND perfil = 'ADMINISTRADOR';");
		
	}
	
	public LinkedList<Profissional> buscarProfissionalNome(String nome) throws Exception {
		Statement stmt = null;
		ResultSet rs = null;
		LinkedList<Profissional> lista = new LinkedList<Profissional>();
		
		stmt = ConexaoBD.getInstance().createStatement();
		rs = stmt.executeQuery("select * from profissional,usuario where profissional.login=usuario.login and usuario.nome LIKE '%"+nome+"%' AND usuario.status = 'ATIVO' ORDER BY usuario.nome;");
		
		while (rs.next()) {
			lista.add(new Profissional( rs.getString("login"), rs.getString("registro"), rs.getString("nome"), rs.getString("cpf"), rs.getString("rg"), rs.getString("categoria"), rs.getString("especialidade"), rs.getString("valor_consulta"), new Data(rs.getString("nascimento")), rs.getString("telefone1"), rs.getString("telefone2"), rs.getString("email"), rs.getString("sexo"), rs.getString("orgao_expedidor"), rs.getString("estado_expedidor"), rs.getString("horario_trabalho")  ));
		}
		
		return lista;
	}
	
	public LinkedList<Profissional> buscarTodosProfissionais() throws Exception {
		Statement stmt = null;
		ResultSet rs = null;
		LinkedList<Profissional> lista = new LinkedList<Profissional>();
		
		stmt = ConexaoBD.getInstance().createStatement();
		
		rs=stmt.executeQuery("SELECT * FROM profissional,usuario WHERE profissional.login=usuario.login AND usuario.status = 'ATIVO' ORDER BY usuario.nome;");
		
		while (rs.next()) {
			
			lista.add(new Profissional(rs.getString("login"), rs.getString("registro"), rs.getString("nome"), rs.getString("cpf"), rs.getString("rg"), rs.getString("categoria"), rs.getString("especialidade"), rs.getString("valor_consulta"), new Data(rs.getString("nascimento")), rs.getString("telefone1"), rs.getString("telefone2"), rs.getString("email"), rs.getString("sexo"), rs.getString("orgao_expedidor"), rs.getString("estado_expedidor"), rs.getString("horario_trabalho")  ));
		}
		
		return lista;
	}

	public void cadastrarProfissional(Profissional p) throws Exception {
		Statement stmt = null;
		stmt = ConexaoBD.getInstance().createStatement();
		
		stmt.execute("BEGIN;");
		stmt.execute("INSERT INTO usuario(login,senha,status,nome) VALUES ('"+p.getLogin()+"','"+p.getSenha()+"','ATIVO','"+p.getNome()+"');");
		stmt.execute("INSERT INTO profissional(cpf,registro,orgao_expedidor,estado_expedidor,rg,categoria,especialidade,valor_consulta,nascimento,telefone1,telefone2,email,login,sexo,horario_trabalho) VALUES ('"+p.getCpf()+"','"+p.getRegistro()+"','"+p.getOrgaoExpeditorRegistro()+"','"+p.getEstadoExpedidor()+"','"+p.getRg()+"','"+p.getCategoria()+"','"+p.getEspecialidade()+"','"+p.getValorDaConsulta()+"','"+p.getNascimento()+"','"+p.getTelefoneFixo()+"','"+p.getTelefoneCelular()+"','"+p.getEmail()+"','"+p.getLogin()+"','"+p.getSexo()+"','"+p.getHorarioAtendimento()+"');");
		stmt.execute("INSERT INTO usuario_perfil(usuario,perfil) VALUES ('"+p.getLogin()+"','PROFISSIONAL');");
		stmt.execute("COMMIT;");
		
	}
	

}
